#pragma once
#include "Graphics_Lib.h"
#include "HelpfulData.h"
#include "Floor.h"

extern class Entity;
extern class GraphNode;

#define NUM_FLOORS 10

class World
{
private:
	Floor m_floors[NUM_FLOORS];
	int m_currentFloor;
public:
	World();
	~World();
	void release();
	void initialize();
	void setCurrentFloor(int nFloor);
	inline int getCurrentFloor() { return m_currentFloor; }
	bool FloorVisited(int floor);
	inline bool FloorVisited() { return m_floors[m_currentFloor].FloorVisited(); }
	bool FloorCleared(int floor);
	inline bool FloorCleared() { return m_floors[m_currentFloor].FloorCleared(); }
	bool WallCollision(Entity * entity);
	void update(float dT);
	void render();
	//void renderMiniMap();
	//void renderWorldMap();
	inline GraphNode * getNode(V2DF position) { return m_floors[m_currentFloor].getNode(position); }
	inline GraphNode * getNode(int id) { return m_floors[m_currentFloor].getNode(id); }
};